{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true,
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "# 决策树之旅\n",
    "\n",
    "本节参考:\n",
    "\n",
    "环境要求:\n",
    "scikit-learn > 1.6 matplotlib seaborn\n",
    "\n",
    "\n",
    "- decisionboundarydisplay\n"
   ]
  },
  {
   "cell_type": "markdown",
   "source": [
    "决策树的缺点：\n",
    "\n",
    "- 回归任务精度问题\n",
    "\n",
    "- 不平衡分类\n",
    "\n",
    "- 高阶特征依赖多个特征组合的，比如图像分类\n",
    "\n",
    "- 特征尺度敏感，一个范围为1-1000，另一个为0-1,1-1000作用更大\n",
    "\n",
    "- 过拟合\n",
    "\n",
    "- 概率估计可能距离真实的概率较远，尤其是样本较小时，在需要给出置信度的任务时可能是一个缺点"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "决策树哪些场景不适用？\n",
    "\n",
    "\n",
    "高维稀疏数据场景\n",
    "问题表现：当数据维度很高（如文本分类、基因表达数据）且大量特征值为 0 时，决策树难以有效识别有价值的特征组合。\n",
    "原因：稀疏数据中多数特征的信息增益较低，决策树可能倾向于选择少数非零特征，但无法捕捉特征间的隐含关联。\n",
    "\n",
    "\n",
    "连续型变量的复杂关系\n",
    "问题表现：对于连续型变量存在非线性关系的任务（如预测房价与面积、楼层的非线性关系），决策树的分段线性划分能力有限。\n",
    "原因：决策树通过单特征阈值划分节点，难以拟合复杂的曲线关系，需深度很大的树才能近似，易导致过拟合。\n",
    "\n",
    "数据噪声或冗余特征较多\n",
    "问题表现：当数据中存在大量噪声特征（如传感器异常数据）或冗余特征（如重复测量的指标）时，决策树容易误选噪声特征作为分裂依据。\n",
    "后果：导致模型在训练集上表现良好，但泛化能力差（过拟合）。\n",
    "\n",
    "\n",
    "锯齿状或复杂边界：如果分类边界需要极其精细的锯齿状分割（例如密集的螺旋线），决策树可能需要极深的深度和大量节点，容易过拟合。\n",
    "\n",
    "数据噪声：若边界附近存在噪声点，决策树可能通过过拟合噪声来强行分割，导致泛化性差。\n",
    "\n",
    "倾斜或旋转边界：决策树的轴对齐分割（即只能沿坐标轴方向划分）可能对倾斜的线性边界效率低下（需多次分割逼近一个斜线），此时模型复杂度会显著增加。"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}